package demo.practice.binary_search;

public class Offer11 {

    //3589124

    public static void main(String[] args) {
        Offer11 offer11= new Offer11();
        int i = offer11.minArray(new int[]{1, 3, 5});

    }

    public int minArray(int[] numbers) {

        //这个解法，在数组没有旋转的时候，就会出错

        int min=0;
        int max=numbers.length-1;

        while (min<max){
            int mid= min+(max-min)/2;
            if(numbers[mid]>numbers[min]){//前面有序，最小值在后面(肯定不为当前值）如3589122
                min=mid+1;
            }else if(numbers[mid]<numbers[min]){//后面有序，最小值为当前值或者当前值如 8912235  ，5891223
                max=mid;
            }else{//numbers[mid]==numbers[min]   //无法确定，如//101111  丢弃到第一个值，让第一个值不作为选择范围
                max--;
            }
        }

        return numbers[min];

    }

}
